home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / python2.6 / token.py < prev    next >
Text File  |  2009-11-02  |  3KB  |  143 lines

  1. #! /usr/bin/python2.6
  2.  
  3. """Token constants (from "token.h")."""
  4.  
  5. #  This file is automatically generated; please don't muck it up!
  6. #
  7. #  To update the symbols in this file, 'cd' to the top directory of
  8. #  the python source tree after building the interpreter and run:
  9. #
  10. #    python Lib/token.py
  11.  
  12. #--start constants--
  13. ENDMARKER = 0
  14. NAME = 1
  15. NUMBER = 2
  16. STRING = 3
  17. NEWLINE = 4
  18. INDENT = 5
  19. DEDENT = 6
  20. LPAR = 7
  21. RPAR = 8
  22. LSQB = 9
  23. RSQB = 10
  24. COLON = 11
  25. COMMA = 12
  26. SEMI = 13
  27. PLUS = 14
  28. MINUS = 15
  29. STAR = 16
  30. SLASH = 17
  31. VBAR = 18
  32. AMPER = 19
  33. LESS = 20
  34. GREATER = 21
  35. EQUAL = 22
  36. DOT = 23
  37. PERCENT = 24
  38. BACKQUOTE = 25
  39. LBRACE = 26
  40. RBRACE = 27
  41. EQEQUAL = 28
  42. NOTEQUAL = 29
  43. LESSEQUAL = 30
  44. GREATEREQUAL = 31
  45. TILDE = 32
  46. CIRCUMFLEX = 33
  47. LEFTSHIFT = 34
  48. RIGHTSHIFT = 35
  49. DOUBLESTAR = 36
  50. PLUSEQUAL = 37
  51. MINEQUAL = 38
  52. STAREQUAL = 39
  53. SLASHEQUAL = 40
  54. PERCENTEQUAL = 41
  55. AMPEREQUAL = 42
  56. VBAREQUAL = 43
  57. CIRCUMFLEXEQUAL = 44
  58. LEFTSHIFTEQUAL = 45
  59. RIGHTSHIFTEQUAL = 46
  60. DOUBLESTAREQUAL = 47
  61. DOUBLESLASH = 48
  62. DOUBLESLASHEQUAL = 49
  63. AT = 50
  64. OP = 51
  65. ERRORTOKEN = 52
  66. N_TOKENS = 53
  67. NT_OFFSET = 256
  68. #--end constants--
  69.  
  70. tok_name = {}
  71. for _name, _value in globals().items():
  72.     if type(_value) is type(0):
  73.         tok_name[_value] = _name
  74. del _name, _value
  75.  
  76.  
  77. def ISTERMINAL(x):
  78.     return x < NT_OFFSET
  79.  
  80. def ISNONTERMINAL(x):
  81.     return x >= NT_OFFSET
  82.  
  83. def ISEOF(x):
  84.     return x == ENDMARKER
  85.  
  86.  
  87. def main():
  88.     import re
  89.     import sys
  90.     args = sys.argv[1:]
  91.     inFileName = args and args[0] or "Include/token.h"
  92.     outFileName = "Lib/token.py"
  93.     if len(args) > 1:
  94.         outFileName = args[1]
  95.     try:
  96.         fp = open(inFileName)
  97.     except IOError, err:
  98.         sys.stdout.write("I/O error: %s\n" % str(err))
  99.         sys.exit(1)
  100.     lines = fp.read().split("\n")
  101.     fp.close()
  102.     prog = re.compile(
  103.         "#define[ \t][ \t]*([A-Z0-9][A-Z0-9_]*)[ \t][ \t]*([0-9][0-9]*)",
  104.         re.IGNORECASE)
  105.     tokens = {}
  106.     for line in lines:
  107.         match = prog.match(line)
  108.         if match:
  109.             name, val = match.group(1, 2)
  110.             val = int(val)
  111.             tokens[val] = name          # reverse so we can sort them...
  112.     keys = tokens.keys()
  113.     keys.sort()
  114.     # load the output skeleton from the target:
  115.     try:
  116.         fp = open(outFileName)
  117.     except IOError, err:
  118.         sys.stderr.write("I/O error: %s\n" % str(err))
  119.         sys.exit(2)
  120.     format = fp.read().split("\n")
  121.     fp.close()
  122.     try:
  123.         start = format.index("#--start constants--") + 1
  124.         end = format.index("#--end constants--")
  125.     except ValueError:
  126.         sys.stderr.write("target does not contain format markers")
  127.         sys.exit(3)
  128.     lines = []
  129.     for val in keys:
  130.         lines.append("%s = %d" % (tokens[val], val))
  131.     format[start:end] = lines
  132.     try:
  133.         fp = open(outFileName, 'w')
  134.     except IOError, err:
  135.         sys.stderr.write("I/O error: %s\n" % str(err))
  136.         sys.exit(4)
  137.     fp.write("\n".join(format))
  138.     fp.close()
  139.  
  140.  
  141. if __name__ == "__main__":
  142.     main()
  143.